/*!
 *
 * This program is free software; you can redistribute it and/or modify it under the
 * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
 * Foundation.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this
 * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
 * or from the Free Software Foundation, Inc.,
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
 * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU Lesser General Public License for more details.
 *
 *
 * Copyright (c) 2002-2018 Hitachi Vantara. All rights reserved.
 *
 */

//
// This file was generated by the JavaTM Architecture for XML Binding(JAXB) Reference Implementation, v2.2.4-2 
// See <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> 
// Any modifications to this file will be lost upon recompilation of the source schema. 
// Generated on: 2013.07.25 at 11:25:28 AM EDT 
//

package org.pentaho.platform.plugin.services.importexport.exportManifest.bindings;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlSchemaType;
import javax.xml.bind.annotation.XmlType;
import javax.xml.datatype.XMLGregorianCalendar;

import org.pentaho.platform.api.repository2.unified.RepositoryFile;

/**
 * <p>
 * Java class for EntityMetaData complex type.
 * 
 * <p>
 * The following schema fragment specifies the expected content contained within this class.
 * 
 * <pre>
 * &lt;complexType name="EntityMetaData">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;attribute name="name" use="required">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;minLength value="1"/>
 *             &lt;maxLength value="255"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *       &lt;attribute name="createdDate" type="{http://www.w3.org/2001/XMLSchema}dateTime" />
 *       &lt;attribute name="createdBy">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;minLength value="0"/>
 *             &lt;maxLength value="32"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *       &lt;attribute name="isFolder" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 *       &lt;attribute name="path" use="required">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;minLength value="1"/>
 *             &lt;maxLength value="255"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *       &lt;attribute name="isHidden" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 *       &lt;attribute name="owner">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;minLength value="0"/>
 *             &lt;maxLength value="32"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *       &lt;attribute name="locale">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;minLength value="0"/>
 *             &lt;maxLength value="10"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *       &lt;attribute name="description">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;minLength value="0"/>
 *             &lt;maxLength value="255"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *       &lt;attribute name="title">
 *         &lt;simpleType>
 *           &lt;restriction base="{http://www.w3.org/2001/XMLSchema}string">
 *             &lt;minLength value="0"/>
 *             &lt;maxLength value="35"/>
 *           &lt;/restriction>
 *         &lt;/simpleType>
 *       &lt;/attribute>
 *       &lt;attribute name="runAfterImport" type="{http://www.w3.org/2001/XMLSchema}boolean" default="false" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * 
 * 
 */
@XmlAccessorType( XmlAccessType.FIELD )
@XmlType( name = "EntityMetaData" )
public class EntityMetaData {

  @XmlAttribute( name = "name", required = true )
  protected String name;
  @XmlAttribute( name = "createdDate" )
  @XmlSchemaType( name = "dateTime" )
  protected XMLGregorianCalendar createdDate;
  @XmlAttribute( name = "createdBy" )
  protected String createdBy;
  @XmlAttribute( name = "isFolder" )
  protected Boolean isFolder;
  @XmlAttribute( name = "path", required = true )
  protected String path;
  @XmlAttribute( name = "isHidden" )
  protected Boolean hidden;
  @XmlAttribute( name = "isSchedulable" )
  protected Boolean schedulable;
  @XmlAttribute( name = "owner" )
  protected String owner;
  @XmlAttribute( name = "locale" )
  protected String locale;
  @XmlAttribute( name = "description" )
  protected String description;
  @XmlAttribute( name = "title" )
  protected String title;
  @XmlAttribute( name = "runAfterImport" )
  protected Boolean runAfterImport;

  /**
   * Gets the value of the name property.
   * 
   * @return possible object is {@link String }
   * 
   */
  public String getName() {
    return name;
  }

  /**
   * Sets the value of the name property.
   * 
   * @param value
   *          allowed object is {@link String }
   * 
   */
  public void setName( String value ) {
    this.name = value;
  }

  /**
   * Gets the value of the createdDate property.
   * 
   * @return possible object is {@link XMLGregorianCalendar }
   * 
   */
  public XMLGregorianCalendar getCreatedDate() {
    return createdDate;
  }

  /**
   * Sets the value of the createdDate property.
   * 
   * @param value
   *          allowed object is {@link XMLGregorianCalendar }
   * 
   */
  public void setCreatedDate( XMLGregorianCalendar value ) {
    this.createdDate = value;
  }

  /**
   * Gets the value of the createdBy property.
   * 
   * @return possible object is {@link String }
   * 
   */
  public String getCreatedBy() {
    return createdBy;
  }

  /**
   * Sets the value of the createdBy property.
   * 
   * @param value
   *          allowed object is {@link String }
   * 
   */
  public void setCreatedBy( String value ) {
    this.createdBy = value;
  }

  /**
   * Gets the value of the isFolder property.
   * 
   * @return possible object is {@link Boolean }
   * 
   */
  public boolean isIsFolder() {
    if ( isFolder == null ) {
      return false;
    } else {
      return isFolder;
    }
  }

  /**
   * Sets the value of the isFolder property.
   * 
   * @param value
   *          allowed object is {@link Boolean }
   * 
   */
  public void setIsFolder( Boolean value ) {
    this.isFolder = value;
  }

  /**
   * Gets the value of the path property.
   * 
   * @return possible object is {@link String }
   * 
   */
  public String getPath() {
    return path;
  }

  /**
   * Sets the value of the path property.
   * 
   * @param value
   *          allowed object is {@link String }
   * 
   */
  public void setPath( String value ) {
    this.path = value;
  }

  /**
   * Gets the value of the isHidden property.
   * 
   * @return possible object is {@link Boolean }
   * 
   */
  public Boolean isHidden() {
    return hidden;
  }

  public boolean isHiddenOrDefault() {
    return hidden == null ? RepositoryFile.HIDDEN_BY_DEFAULT : hidden;
  }

  /**
   * Sets the value of the isHidden property.
   * 
   * @param value
   *          allowed object is {@link Boolean }
   * 
   */
  public void setHidden( Boolean value ) {
    this.hidden = value;
  }

  /**
   * Gets the value of the schedulable property.
   * 
   * @return possible object is {@link Boolean }
   * 
   */
  public Boolean isSchedulable() {
    return schedulable;
  }

  public boolean isSchedulableOrDefault() {
    return schedulable == null ? RepositoryFile.SCHEDULABLE_BY_DEFAULT : schedulable;
  }

  /**
   * Sets the value of the schedulable property
   * 
   * @param value
   *          allowed object is {@link Boolean }
   * 
   */
  public void setSchedulable( Boolean value ) {
    this.schedulable = value;
  }

  /**
   * Gets the value of the owner property.
   * 
   * @return possible object is {@link String }
   * 
   */
  public String getOwner() {
    return owner;
  }

  /**
   * Sets the value of the owner property.
   * 
   * @param value
   *          allowed object is {@link String }
   * 
   */
  public void setOwner( String value ) {
    this.owner = value;
  }

  /**
   * Gets the value of the locale property.
   * 
   * @return possible object is {@link String }
   * 
   */
  public String getLocale() {
    return locale;
  }

  /**
   * Sets the value of the locale property.
   * 
   * @param value
   *          allowed object is {@link String }
   * 
   */
  public void setLocale( String value ) {
    this.locale = value;
  }

  /**
   * Gets the value of the description property.
   * 
   * @return possible object is {@link String }
   * 
   */
  public String getDescription() {
    return description;
  }

  /**
   * Sets the value of the description property.
   * 
   * @param value
   *          allowed object is {@link String }
   * 
   */
  public void setDescription( String value ) {
    this.description = value;
  }

  /**
   * Gets the value of the title property.
   * 
   * @return possible object is {@link String }
   * 
   */
  public String getTitle() {
    return title;
  }

  /**
   * Sets the value of the title property.
   * 
   * @param value
   *          allowed object is {@link String }
   * 
   */
  public void setTitle( String value ) {
    this.title = value;
  }

  /**
   * Gets the value of the runAfterImport property.
   * 
   * @return possible object is {@link Boolean }
   * 
   */
  public boolean isRunAfterImport() {
    if ( runAfterImport == null ) {
      return false;
    } else {
      return runAfterImport;
    }
  }

  /**
   * Sets the value of the runAfterImport property.
   * 
   * @param value
   *          allowed object is {@link Boolean }
   * 
   */
  public void setRunAfterImport( Boolean value ) {
    this.runAfterImport = value;
  }

}
